package kr.hkit.androidcomplete03.ch22;

import java.util.Random;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

public class Ball {
	int x, y;			// ball의 좌표
	int rad;			// ball의 반지름
	int dx, dy;			// ball이 이동방향
	int color;			// ball의 색깔
	int count;			// ball이 벽에 부딪히는 제한수
	
	Paint paint;
	
	static Ball Create(int x, int y){
		Random Rnd = new Random();
		Ball NewBall = new Ball();
		
		NewBall.paint = new Paint(Paint.ANTI_ALIAS_FLAG);
		NewBall.x = x;
		NewBall.y = y;		
		NewBall.rad = Rnd.nextInt(50);
		
		do{
			NewBall.dx = Rnd.nextInt(11) - 5;
			NewBall.dy = Rnd.nextInt(11) - 5;
		} while(NewBall.dx == 0 || NewBall.dy == 0);		// 수평/수직으로 이동하는 것을 뺀다.
		
		NewBall.count = 0;
		NewBall.color = Color.rgb(Rnd.nextInt(256), Rnd.nextInt(256), Rnd.nextInt(256));
		
		return NewBall;
	}	//	end of Create()
	
	void Move(int width, int height){
		x += dx;
		y += dy;
		
		// 반지름과 x의 좌표가 같을 때는 딱 맞았을 때.
		// 기존의 방향과 반대 방향으로 이동하게 끔 dx *= -1; 연산으로 방향 전환
		if(x < rad || x > width - rad){
			dx *= -1;	
			count++;
		}
		
		// 반지름과 y의 좌표가 같을 때는 딱 맞았을 때.
		// 기존의 방향과 반대 방향으로 이동하게 끔 dy *= -1; 연산으로 방향 전환
		if(y < rad || y > height - rad){
			dy *= -1;
			count++;
		}
	}	// end of Move
	
	
	void Draw(Canvas canvas){
		//Paint pnt = new Paint();
		//paint.setAntiAlias(true);
		
		// 공을 연하게 그리는  방법으로 구현(5pixel씩 증가시키면서 그려줌)
		for(int r = rad, alpha = 1; r > 4; r--, alpha += 5){
			// 색깔 지정
			paint.setColor(Color.argb(alpha, Color.red(color), Color.green(color), Color.blue(color)));	
			canvas.drawCircle(x, y, r, paint);
		}
	}
}
